package com.liuugoqing.structural.combination;

/**
 * 抽象根节点（Component）：定义系统各层次对象的共有方法和属性，可以预先定义一些默认行为和属性
 * @Author : liugq
 * @Date : 2022/7/5 15:57
 * @See : 参考类
 * @Since： JDK1.8
 * @Version : 1.0
 */
public abstract class MenuComponent {
    protected String name;
    protected int level;


    /**
     * 添加节点操作，由于叶子节点无法添加节点（使用组合模式，将所有的节点和叶子节点看做同一对象）
     * 所以抛出异常
     * @param menuComponent 节点
     */
    public void add(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    /**
     * 同添加一个道理
     * @param menuComponent
     */
    public void remove(MenuComponent menuComponent){
        throw new UnsupportedOperationException();
    }

    /**
     * 获取指定层级的菜单
     * @param i 指定层级
     * @return
     */
    public MenuComponent getChild(int i){
        throw new UnsupportedOperationException();
    }

    public String getName() {
        return name;
    }

    public void print(){
        throw new UnsupportedOperationException();
    }
}
